listbox: Avoid crashing on page down if the list has few rows
authorJoaquim Rocha <jrocha@endlessm.com>
Thu, 1 Sep 2016 11:23:14 +0000 (13:23 +0200)
committerJoaquim Rocha <jrocha@endlessm.com>
Sat, 3 Sep 2016 11:52:39 +0000 (13:52 +0200)
The code always assumed that getting a row at a certain 'y' was
possible but if the list box has more empty space than rows then a
valid row may not be retrieved.

https://bugzilla.gnome.org/show_bug.cgi?id=770703

gtk/gtklistbox.c

index 57d1f336e8b85131161aa0cec06f70545394c5bd..d86c2908cd48923c857bcb1e1e1a1a3aa9a39c63 100644 (file)
@@ -3041,10 +3041,11 @@ gtk_list_box_move_cursor (GtkListBox      *box,
           height = gtk_widget_get_allocated_height (GTK_WIDGET (box));
           end_y = CLAMP (start_y + page_size * count, 0, height - 1);
           row = gtk_list_box_get_row_at_y (box, end_y);
-          iter = ROW_PRIV (row)->iter;
 
           if (row == priv->cursor_row)
             {
+              iter = ROW_PRIV (row)->iter;
+
               /* Move at least one row. This is important when the cursor_row's height is
                * greater than page_size */
               if (count < 0)